Content sharing interface for sharing content in social networks

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on a computer storage medium, for presenting a graphical representation of a content sharing interface of a social networking service on a display, receiving first user input to the content sharing interface, in response to the first user input, expanding the content sharing interface to include an expanded content input area and a distribution interface, the expanded content input area displaying a graphical representation of digital content that is to be distributed, receiving second user input to the distribution interface, the second user input indicating contact(s) to which the digital content is to be distributed, in response to receiving the second user input, displaying icon(s) within the distribution interface, and transmitting a post data set to the server computing system, the post data set comprising digital content data and distribution data.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Prov. Pat. App. No.61/408,732, filed Nov. 1, 2010, and U.S. Prov. Pat. App. No. 61/408,811,filed Nov. 1, 2010, the disclosures of which are expressly incorporatedherein by reference in their entireties.

TECHNICAL FIELD

This specification generally relates to systems and methods for sharingdigital content using a computer-implemented social networking service.

BACKGROUND

Computers and mobile devices, such as cellular phones and personaldigital assistants, have become increasingly interconnected due to thewidespread availability of wired and wireless connections tocommunications networks such as the Internet. Even in the earliest daysof the ARPANET, users took advantage of such interconnectivity tocommunicate with one another through early forms of email. As email grewin availability and popularity, email “lists” became a popular tool forbroadcasting messages to predefined groups of recipients.

In the 1980's, Internet based “newsgroups” emerged in which users couldread and respond to discussion threads revolving around a wide varietyof predefined categories. Newsgroups are generally readable andupdatable by anyone with the equipment to access them, since access tonewsgroups is generally not restricted on a per-newsgroup or per-userbasis. World Wide Web based discussion groups (i.e., also known asclubs) have also provided a way for groups of people to associate arounda topic. Through the use of web server programming, the idea ofdiscussion groups and discussion threads has been extended to provideusers with the ability to subscribe to secured discussion forums thatare, in some cases, moderated by other users.

Another variant of Internet based communication forums are the web-based“social network” applications, in which a number of users are able tofind each other's' accounts and voluntarily become “friends” or“followers” of each other's posted messages. Users generally post briefmessages about their status, mood, activities, and such, and theirfriends and followers can read and optionally reply to those messages.As such, friends may stay abreast of each other's' activities as a toolfor maintaining their social bonds.

Some social networks provide tools for sharing information into or outof the social network. For example, some social networking websitesprovide a button that can be incorporated into third party web pages.When a user presses the button, information is passed back to the socialnetworking website to indicate who pressed the button and on which webpage the button was located. In such examples, the user's socialnetworking peers can be notified about the user's activity on the thirdparty web page.

SUMMARY

In general, innovative aspects of the subject matter described in thisdisclosure may be embodied in methods that include the actions ofpresenting a graphical representation of a content sharing interface ofa social networking service on a display, receiving first user input tothe content sharing interface, in response to the first user input,expanding the content sharing interface to include an expanded contentinput area and a distribution interface, the expanded content input areadisplaying a graphical representation of digital content that is to bedistributed, receiving second user input to the distribution interface,the second user input indicating one or more contacts to which thedigital content is to be distributed, in response to receiving thesecond user input, displaying one or more icons within the distributioninterface, each icon of the one or more icons being a graphicalrepresentation of the one or more contacts, receiving third user inputto the content sharing interface, the third user input comprising a userinstruction to distribute the digital content, and in response to thethird user input, transmitting a post data set to the server computingsystem, the post data set comprising digital content data anddistribution data.

These and other implementations may each optionally include one or moreof the following features. For instance, an icon of the one or moreicons corresponds to a social circle of the user within the socialnetworking service, the social circle defining a subset of the one ormore contacts; an icon of the one or more icons corresponds to a secondsocial networking service that the user participates in; the secondsocial networking service includes a micro-blogging social networkingservice; the second social networking service includes a bloggingservice; an icon of the one or more icons corresponds to at least onecontact that is to receive the digital content via email; actionsfurther include displaying web page digital content within the web page,wherein the content sharing interface displays a summary of the web pagedigital content within the expanded content input area; actions furtherinclude displaying one or more digital content selection icons withinthe expanded content selection area; actions further include: receivingfourth user input, the fourth user input indicating a selection of anicon of the one or more digital content selection icons, and in responseto receiving the fourth user input, displaying a digital contentselection interface through which a user can select additional digitalcontent for distribution; the one or more digital content selectionicons include a digital image selection icon, a digital video selectionicon, a link selection icon and a map selection icon; the one or moredigital content selection icons are displayed in the content sharinginterface prior to receiving the first user input; the graphicalrepresentation of the content sharing interface is displayed on adesktop display of the client computing device; and the graphicalrepresentation of the content sharing interface is displayed as atoolbar within a web browser application executed on the clientcomputing device.

Other implementations of this aspect include corresponding systems,apparatus, and computer programs, configured to perform the actions ofthe methods, encoded on computer storage devices.

The details of one or more implementations of the subject matterdescribed in this specification are set forth in the accompanyingdrawings and the description below. Other potential features, aspects,and advantages of the subject matter will become apparent from thedescription, the drawings, and the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 depicts an example system that can execute implementations of thepresent disclosure.

FIGS. 2A-2D depict an example content sharing interface in accordancewith implementations of the present disclosure.

FIGS. 3A and 3B depict another example content sharing interface inaccordance with implementations of the present disclosure.

FIGS. 4A-4D depict another example content sharing interface inaccordance with implementations of the present disclosure.

FIGS. 5A and 5B depict an implementation of the example content sharinginterface of FIGS. 4A-4D.

FIGS. 6A-6B depict a screenshot of an example stream page for a user ofa social networking service including an example content sharinginterface.

FIG. 7 depicts a screenshot of an example web page including examplecontent sharing interfaces.

FIG. 8 depicts a screenshot of an example map page including an examplecontent sharing interface.

FIG. 9 is a flowchart illustrating an example process for sharingcontent.

FIGS. 10A-11 depict example output of an access control list (ACL)service in enforcing domain policies.

FIG. 12 is a flowchart illustrating an example process for enforcingpolicies.

Like reference numbers represent corresponding parts throughout.

DETAILED DESCRIPTION

In general, implementations of the present disclosure are directed tocontent sharing interfaces that can be used to define a distribution ofdigital content. As used herein, a sharing user can include a user of acomputing device that shares digital content with other users over anetwork (e.g., the Internet). As used herein, a receiving user caninclude a user that receives digital content shared by a sharing user.Receiving users can be associated with a sharing user in one or morecontexts. In some implementations, the receiving users and the sharinguser can be contacts of one another within a social networking service.In some implementations, the receiving users can be users that arecontacts of the sharing user within an email service.

Content sharing interfaces, as discussed in further detail herein, areprovided in association with various forms of digital content (e.g.,uniform resource indicators (URIs), hyperlinks, maps, images, videos,files, social network posts, online articles, blogs). Users can interactwith a content sharing interface to indicate that they wish to post thecontent associated with the interface, or a comment about the content,to contacts within a social networking service and/or contacts externalto the social networking service.

FIG. 1 is a diagram of an example network architecture 100. The networkarchitecture 100 includes a number of client devices 102-110communicably connected to a server system 112 by a network 114. Theserver system 112 includes one or more processing devices 116 and one ormore data stores 118. The processing devices 116 execute computerinstructions (e.g., social network computer program code) stored in thedata stores 118 to perform functions (e.g., of a social network server).

A number of users 120 a-120 e of the client devices 102-110,respectively, access the server system 112 to participate in a socialnetworking service. For example, the client devices 102-110 can executeweb browser applications that can be used to access the socialnetworking service. In another example, the client devices 102-110 canexecute software applications that are specific to the social network(e.g., social networking “apps” running on smartphones).

The users 120 a-120 e can participate in the social networking serviceprovided by the server device 112 by posting information, such as textcomments (e.g., updates, announcements, replies), digital images,videos, search results, a link to other digital content (e.g., a uniformresource locator (URL) linking to a digital video and/or digital images)and/or other appropriate digital content. In some implementations,information can be posted on a user's behalf by systems and/or servicesexternal to the social network or the server system 112. For example,the user 120 a may post a review of a movie to a movie review website,and with proper permissions that website may cross-post the review tothe social network on the user's 120 a behalf. In another example, asoftware application executing on a mobile device, with properpermissions, may use global positioning system (GPS) capabilities todetermine the user's location and automatically update the socialnetwork with the user's location (e.g., “At Home”, “At Work”, “InBrownsdale, Minn.”).

Users 120 a-120 e interacting with the client devices 102-110 can alsouse the social network provided by the server system 112 to definesocial circles to organize and categorize the relationships to otherusers. Such relationships can be defined using social circles. In someimplementations, a social networking service enables a user to groupcontacts into one or more social circles, which can be based oncategories of relationships of a user to other users. The relationshipcan be implicit or explicit. For example, and within the context of asocial networking service, a user can assign contacts to one or moresocial circles to better control the distribution and visibility ofsocial networking posts and/or other digital content. In someimplementations, a social circle is provided as a data set defining acollection of contacts that are associated with a user of acomputer-implemented social networking service. Generally, a socialcircle can be described from the perspective of an individual that isthe center of a particular collection of socially interconnected people,or from the aggregate perspective of a collection of sociallyinterconnected people. A social circle can have narrowly definedboundaries, all of the members of the social circle may be familiar withone another, and permission may be required for a member to join asocial circle. For example, a user of the social networking servicedefine a social circle, and the social circle, as a data set defining acollection of contacts, may reflect a real-life social circle of theuser.

Users of a social networking service may wish to share information withsocial networking peers. However, users may also wish to have controlover distribution of such information among their social networkingpeers. For example, some users may have concerns about their privacywhen posting information. Such users may wish to keep posts about theirpersonal activities restricted from their professional social circles.For example, a user can post pictures of his softball team to his“friends” and “softball team” social circles, but not to a “co-workers”social circle. Other users may wish to target the information they postso it reaches substantially only selected subsets of their contacts. Forexample, a user may wish to post family announcements substantially onlyto a “family” social circle, or may wish to post political commentssubstantially only to a “politics” social circle.

In some implementations, the client devices 102-110 can be computingdevices such as laptop or desktop computers, smartphones, personaldigital assistants, portable media players, tablet computers, or otherappropriate computing devices that can be used to communicate with anelectronic social network. In some implementations, the server system112 can include a single computing device such as a computer server. Insome implementations, the server system 112 can represent more than onecomputing device working together to perform the actions of a servercomputer (e.g., cloud computing). In some implementations, the network114 can be a public communication network (e.g., the Internet, cellulardata network, dialup modems over a telephone network) or a privatecommunications network (e.g., private LAN, leased lines).

FIGS. 2A-2D depict an example content sharing interface 200 inaccordance with implementations of the present disclosure. As discussedin further detail herein, the content sharing interface 200 can bepresented to a user of a social networking service within the socialnetworking service (e.g., the content sharing interface 200 is displayedwithin a web page of a website of the social networking service), and/orexternal to the social networking service (e.g., the content sharinginterface 200 is displayed within a web page of a website that is notdirectly associated with the social networking service).

The content sharing interface 200 enables users to post digital contentfor distribution of the digital content to a defined set of recipients.In some embodiments, a post can be generated by the user and can includean underlying post data set. The post data set can include dataassociated with the digital content and the identified recipients. Insome implementations, the post data set can include the digital content,timestamp data (e.g., a timestamp indicating the time that the post wasgenerated), distribution data (e.g., contacts, one or more socialcircles, etc.), and identification (ID) data (e.g., an ID assigned tothe post data set upon generation of the post). In some embodiments, thedistribution data is processed to provide an access control list (ACL)that specifies the distribution of the digital content (e.g., whichcontacts within or without the social networking service are grantedaccess to the digital content).

In some embodiments, a distribution hub can be provided as a backendservice (e.g., provided by the server system 112 of FIG. 1). In someimplementations, an ACL service can be executed to provide thedistribution hub and to enforce visibility of distributed digitalcontent. In some examples, the ACL service can be provided as one ormore computer program applications that can be executed by one or moreserver systems. The ACL service can generate the ACL and can determineend points, to which the post data set is to be distributed based on theACL. In some implementations, the contacts that are authorized to accessor otherwise receive the digital content are determined based on theACL. The ID of the post data set can be written to a per user/view indexat the ACL service. When fetching posts to distribute to a particularuser, the user/view index is accessed and the IDs of the various poststhat the user is authorized to view are determined. The post data setsare retrieved from a data store (e.g., data store 118 of FIG. 1) and aretransmitted for display on a client computing device associated with theparticular user.

In implementations of the present disclosure, a distribution for digitalcontent can be defined based on one or more social circles. As usedherein, a distribution can include a list of one or more contacts, towhich digital content is to be distributed using the social networkingservice. In some examples, a distribution includes one sub-distribution(e.g., one social circle is identified for distribution of the digitalcontent). In some examples, a distribution includes a plurality ofsub-distributions. In some implementations, a sub-distribution caninclude a contact that is not a member of a particular social circleand/or is not a user of the underlying social networking service.

The content sharing interface 200 includes distribution interface 202that is associated with digital content providing in a content area 204.In various embodiments, the digital content can be a uniform resourceindicator (URI), a web page, a subsection of a web page, a mediaplayback interface, a hyperlink, a social network post (e.g., text), anonline map, a location on an online map, a digital image, a digitalvideo, search results and/or any other appropriate item or informationthat can be represented in an electronic user interface (UI).

The distribution interface 202 includes a contact input area 206. Aswill be discussed in further detail below, the user can type orotherwise select identifiers to input into the contact input area 206.The identifiers identify other users, categories of users and/or socialcircles to define distribution of the digital content (e.g., through asocial network service). In some implementations, the identifiers caninclude contact identifiers, social circle identifiers, email addresses,or any other appropriate identifier than can be used to identify one ormore persons with whom content can be shared. The identifiers providedin the contact input area 206 are used to generate an ACL that definesdistribution of the digital content provided in the content area 204.

Referring now to FIG. 2B, an example identifier icon 208 is provided inthe distribution interface 202. The identifier icon 208 is a visualrepresentation of one or more users that digital content is to be sharedwith. In the example of FIG. 2B, a user has tentatively indicated thatdigital content within the content area 204 is to be shared with membersof a “friends” social circle. Until the post is committed, discussed infurther detail below, identifier icons provide a tentative distributionfor the digital content. For example, and continuing with the example ofFIG. 2B, the user can activate (e.g., click on) a delete control 210 toremove the identifier icon 208 from the contact input area 206.

Referring now to FIGS. 2C and 2D, a menu 213 can be presented inresponse to user input. In some implementations, the user can select(e.g., click on) the contact input area 206 and the menu 213 isdisplayed in response to the selection. In some implementations, theuser can input text into the contact input area 206 and the menu 213 isdisplayed in response to the input. In some implementations, the usercan select (e.g., click on) an add control 214 and the menu 213 and themenu 213 is displayed in response to the selection. In the illustratedexample of FIG. 2C, the menu 213 includes multiple regions. A menuregion 220 displays a collection of social circles 222 that the user canselect from. The social circles can include social circles that the userhas defined using a social networking service. In some implementations,the collection of social circles 222 may include a subset of the user'smost commonly targeted social circles and/or a subset of the user's mostpopulated social circles. A user control 224 can be selected to displayadditional social circles that are managed by the user. By selecting(e.g., clicking on) a social circle from the listed social circles, acorresponding identifier icon 208 can be displayed in the contact inputarea 206.

A menu region 230 presents a collection non-circle specific contactgroups that the user can select to distribute the content to. Forexample, by selecting “My circles,” the user can choose to share thedigital content with anyone who is in any of the user's social circles.By selecting “Extended Circles,” the user can choose to share thedigital content with anyone in the user's extended network (e.g.,friends of friends, other users who share a public social circle withthe user). By selecting “Anyone,” the user can choose to share thedigital content with anyone (e.g., the general public) over theInternet. By making a selection (e.g., clicking on) from the menu region230, a corresponding identifier icon 208 can be displayed in the contactinput area 206. In some examples, the menu region 230 can include one ormore domains, to which the user can share digital content. In thedepicted example, a domain “Domain” is provided. An example domain caninclude a domain of an Internet-based service provider (e.g., GoogleInc.). One or more domains can be identified in the distributioninterface, and the digital content can be shared with all users thatinteract with the specified domain(s).

A menu region 240 presents a collection of the user's most recently useddistribution lists. In some implementations, the menu region 240 may notbe displayed. For example, new users may have never used the contentsharing interface 200 previously, and therefore may have no previouslyused distribution lists to choose from. As the user uses the contentsharing interface 200, the number of items displayed in the menu region240 can expand up to a predetermined number of most recently useddistribution lists.

With specific reference to FIG. 2D, the selections available in the menu213 can be adapted based on text input into the contact input area 206.In the illustrated example, the user has begun entering freeform text250 into the contact input area 206 in the form of the letter “f” (i.e.,as the freeform text 250). In response to this input, a menu region 260adapts to suggest several targets that may correspond to the user'sentry of the letter “f,” such as a “family” social circle 262, and a“Francisco Franco” contact 264. In some implementations, users ofanother social network service can be targeted. For example, a“Friendworks (Rob McDavies)” contact 266 can be presented in order totarget a user of another social networking service.

In some implementations, the user can indicate that the digital contentis to be distributed to contacts via email. In some examples, sharingdigital content via email can be instead of or in addition to sharingthe digital content through the social networking service. In someimplementations, the user can interact with an identifier icon (e.g.,the identifier icon 208) provided in the distribution interface (e.g.,the distribution interface 202) to provide user input instructing thatthe associated digital content is to be shared via email. In someexamples, the user interaction can include hovering over an identifiericon (e.g., using a pointer) and, in response to the hover action, amenu associated with the particular identifier icon can be displayed.The menu can include a menu option indicating that the contactsassociated with, or otherwise represented by the particular iconidentifier are to receive the digital content via email.

Once the user has defined and is satisfied with the distribution, theuser can commit the post. In some implementations, a share button 212 isprovided. The user can activate (e.g., click on) the share button 212 tocommit the post. Committing of the post can cause operations to beperformed to generate the post data set and distribute the digitalcontent to the identified users, as discussed above.

FIGS. 3A and 3B depict another example content sharing interface 300 inaccordance with implementations of the present disclosure. Referring toFIG. 3A, the content sharing interface 300 includes a content entry area305. In some implementations, the content input area 305 can be thecontent area 204 of FIGS. 2A-2D. In some implementations, the user canselect the content input area 305 to input and/or select digital contentfor distribution. For example, a pointer 310 can be used to interactwith (e.g., click on) the content input area 305 and initiate aninteraction with the content sharing interface 300. For example, theuser can click on the content entry area 305 to initiate the entry oftext as part of an interaction with the content entry area 305.

In some implementations, the user can select an icon 315, 320, 325, 330to initiate input and/or selection of digital content that is to bedistributed. In the illustrated implementation, for example, the usercan select an icon 315 to initiate a process for selecting a digitalimage (e.g., stored in computer-readable memory) to be distributed. Forexample, the user can click on the icon 315, and, in response to theclick, a user interface can be presented in which the user may be ableto upload a digital image file, select a digital image file that waspreviously uploaded, and/or provide a URL corresponding to a digitalimage found elsewhere on the Internet. In some implementations, once adigital image file has been identified, a thumbnail of the digital imageand/or information about the image (e.g., address, filename, caption,title, size, date taken) may appear in the content input area 305.

In the illustrated implementation, for example, the user can select anicon 320 to select a digital video (e.g., stored in computer-readablememory) to be distributed. For example, the user can click on the icon320, and, in response to the click, a user interface can be presented inwhich the user may be able to upload a digital video file, select adigital video file that was previously uploaded, and/or provide a URLcorresponding to a digital video file found elsewhere on the Internet.In some implementations, once a digital video file has been identified,a thumbnail frame capture of the digital video and/or information aboutthe digital video (e.g., address, filename, description, title, size,date taken) may appear in the content input area 305. In someimplementations, shared content may be accompanied by information otherthan a URL or other identifier. For example, the user may click on theicon 320 to share an identified video as shared content. The sharedcontent can include not only an identifier of the video content, butalso a playback start point and duration. In such an example, the usercan share a subsection of the identified video with his targetedcontacts.

In the illustrated implementation, for example, the user can select anicon 325 to provide a hyperlink (e.g., to a URL) for distribution. Forexample, the user can click on the icon 325, and, in response, a userinterface can be presented in which the user may be able to type orpaste in a uniform resource locator (URL) of a web page that the userintends to share. In some implementations, once a URL has beenidentified, a thumbnail preview of the identified page and/orinformation about the page (e.g., URL, website, page title, a thumbnailof a photo selected from the identified page) can be displayed in thecontent input area 305.

In the illustrated implementation, for example, the user can select anicon 330 to select a map location for distribution. For example, theuser can click on the icon 330, and, in response, a user interface canbe presented in which the user may be able to identify a place (e.g.,business, landmark, facility, city) and/or a geographic location (e.g.,physical address, latitude and longitude) that the user intends toshare. In some implementations, once a location has been identified, athumbnail map of the identified location and/or information about thelocation (e.g., URL, physical address, place name, a thumbnail of aphoto of the identified place) can be displayed in the content inputarea 305.

In some implementations, when the icon 330 is activated, a userinterface can be presented to provide the user with a collection ofsuggested places. For example, by activating the icon 330, a process canbe initiated in which the user's current location can be determined, andthat location information can be used to search for and identify a listof nearby places that the user may wish to share. In someimplementations, by activating the icon 330, a process can be initiatedin which a content item or content provided by the user can be analyzedto identify one or more places that may be associated with the content.For example, the user may enter text including “Honeymoon at Mt.Rushmore” and then click on the icon 330. In response, a process may beinitiated to analyze the entered text and suggest “Mt. Rushmore NationalMonument” and/or “Rushmore Honeymoon Cabins” as suggested locations thatcan be included as part of the digital content that is to bedistributed.

With particular reference to FIG. 3B, the content sharing interface 300can expand to include a distribution interface 340 and a share button342. In some implementations, the distribution interface 340 and theshare button can be displayed in response to user activity (e.g.,clicking on) with the content input area 305 including activity with oneor more of the icons 315-330. In some implementations, the content inputarea 305 also expands to provide additional room for input of digitalcontent. The distribution interface 340 and the share button 342, andthe functions thereof, correspond to the distribution interface 202 andthe share button 212 of FIGS. 2A-2D, as discussed in detail above.

In some implementations, multiple digital content can be input to thecontent input area 305 for distribution. For example, the user can clickon the icon 315 to add a digital image, click on the icon 330 to add alocation (e.g., where the image was taken), and type a text descriptioninto the content input area 305. In response to committing the post(e.g., by clicking on the share button), operations are performed togenerate the post data set and distribute the digital content to theidentified users, as discussed above. In this example, the digitalcontent of the post data set would include the digital image, thelocation and the text.

FIGS. 4A-4D depict another example content sharing interface 400 inaccordance with implementations of the present disclosure. Referring toFIG. 4A, the content sharing interface 400 includes a content item 405and a share button 410. In some implementations, the content item 405can be digital content that is displayed on a display. Example contentitems can include one or more search results, a published article, ablog, a post to a social networking service, a digital image, a digitalvideo, an audio file and/or any other appropriate digital content. Forpurposes of discussion, the example content item 405 can include anarticle that is published to a web page of a website. In this example,the share button 410 can be displayed within the web page adjacent to,or otherwise in the vicinity of the content item 405. In this manner,the share button 410 is at least visually associated with the contentitem 405. In some implementations, HTML, JavaScript and/or anyappropriate programming code can be used to generate and display theshare button 410 within the web page, and/or provide metadata thatidentifies the content item 405 as being associated with the sharebutton 410.

Referring now to FIG. 4B, a pointer 415 can be provided to enable a userto select various components displayed on the display. In the example ofFIG. 4B, the pointer 415 is illustrated as hovering over the sharebutton 410 (e.g., movement of the pointer 415 pauses on the share buttonfor a predetermined time). In response to this user action, a displayregion 420 can be presented. The display region 420 displays informationregarding a sharing status associated with the content item 405. In theillustrated example, the display region 420 indicates that the contentitem 405 has been previously shared by a user 422 a and a user 422 b. Insome implementations, the users 422 a, 422 b identified in the displayregion 420 correspond to contacts of the user within a social networkingservice, can be contacts of the user within an email service, and/or canbe users that have some connection to the user (e.g., a friend of afriend in a social networking service).

Referring now to FIG. 4C, the user can select (e.g., click on) the sharebutton 410 to share the content item 405 with other users. In responseto the user selection of the share button 410, the display region 420expands to display a content area 426, a distribution interface 428 anda share button 430. The content area 426, the distribution interface 428and the share button 430, and the functions thereof, correspond to thecontent area 204, distribution interface 202 and the share button 212 ofFIGS. 2A-2D, as discussed in detail above. The content area 426 caninclude a content input area 432 and a content summary area 434.

As discussed in further detail herein, the content input area 432 can beused to input digital content and the content summary area 434 candisplay a summary of the content item 405 that is to be shared. In theillustrated example, the content item 405 includes a published article(e.g., “The 10 Best Books of 2010”). The content summary area 434 ispre-populated with a summary 436 of the content item 405. In theillustrated example, the summary 436 comprises a thumbnail image 435, atitle of the article (e.g., “The 10 Best Books of 2010” and a briefdescription 440 of the article. The content input area 426 provides aninterface with which the user can interact to add textual commentsregarding the content item 405. For example, the user may add a commentsuch as “I have read five of these books, how many have you read?” whensharing the article entitled “The 10 Best Books of 2010.”

In some implementations, the brief description 440 of the article can bea pre-stored summary of the article and/or the first few words orsentences of the article. In some examples, user activation (e.g.,clicking on) the share button 410 initiates a call to a source document(e.g., a web page document) that includes the article. In someimplementations, a pre-stored summary of the article is provided inresponse to the request. In some implementations, an ad hoc summary isgenerated and the summary is returned for display as the briefdescription 440. In some examples, an ad hoc summary can be generatedusing a script that crawls the source document and that extracts data(e.g., text, images) from the source document and generates the summarybased thereon. In some examples, an ad hoc summary can be generated byone or more server systems used to host the source document (e.g., website that includes the web page) in response to a request (e.g., arequest that is automatically generated and transmitted in response touser action on the share button 410).

As discussed above with respect to the distribution interface 202 ofFIG. 2, the user can define a distribution of the shared content item405 using the distribution interface 428. With particular reference toFIG. 4D, an example identifier icon 450 is provided in the distributioninterface 428. In the illustrated example, the identifier icon 450corresponds to a “friends” social circle of the user and indicates thatthere are thirteen contacts in the user's “friends” social circle, withwhich the content item 45 will be shared. In some implementations, anotification type indicator 455 can be provided to display informationthat indicates the manner in which the content item will be shared withsubgroups of the user's contacts. In the illustrated example, of thethirteen contacts in the “friends” social circle, three of thosecontacts will receive a share notification through email. In someimplementations, a change control 460 can be provided and can beassociated with the notification type identifier 455. In someimplementations, the change control 460 can be activated to display anotification change user interface (not shown). For example, thenotification change user interface can include options such as to emailpeople who are not also members of the user's social networking service,to not use email to notify other users, or to specify contacts to sendan email to. In some implementations, the summary can be edited by theuser prior to sharing. For example, the user can enter and/or edit textto the summary and/or can add and/or other digital content as discussedherein.

FIGS. 5A and 5B depict an implementation of the example content sharinginterface 400 of FIGS. 4A-4D. FIG. 5A illustrates an example of thecontent sharing interface 400 as it would appear to the user, after theuser has used the share button 410 to share the content item 405. Theshare button 410 appears visibly altered after the content item 405 hasbeen shared, as compared to the appearance of the share button 410before the user shared the content item 405. For example, the sharebutton 410 may initially be displayed as implementing a first colorscheme before sharing and second color scheme after sharing. In someimplementations, the user may share information about the content item405 by clicking the share button 410 and taking no further action. Forexample, clicking on the share button 410 without entering a comment orassociating any other content with the shared information may be used toindicate that the user liked or has otherwise approved or endorsed thecontent item 405.

Referring now to FIG. 5B, the user hovers the pointer 415 over the sharebutton 410. In response to this action, a display region 520 isdisplayed. The display region 520 displays information regarding thesharing status of the content item 405. In the illustrated example, thedisplay region 520 indicates that the content item 405 has also beenshared by a user 522 (“Jane Doe”). A comment area 525 is also providedfor the user to enter a comment about the content item 405. This can bein addition to a comment already provided by the user when originallysharing the content item.

As discussed in further detail herein, content sharing interfaces can beimplemented across various contexts. As some examples, content sharinginterfaces can be provided within a social networking service (e.g., ona web page of a social networking website), in a search results page,within a mapping service (e.g., on a web page of a mapping website),embedded within web pages and being associated with particular contentwithin a web page (e.g., an article published on a news servicewebsite). In some implementations, a content sharing interface can beprovided as a surf-along window in a web browser that is executed on aclient computing device. In such implementations, for example, thecontent sharing interface can be consistently present as the userswitches between various web pages and content displayed within the webbrowser can be shared using the content sharing interface. Although thecontent sharing interfaces are illustrated and discussed within variousexample contexts, it is contemplated that the content sharing interfacescan be used in other contexts not specifically discussed herein.

FIG. 6A depicts a screen-shot of an example stream page 600 providedwithin the context of an example social networking service. For example,the stream page 600 can be provided as a web page within a website of asocial networking service, and can display digital content that has beenshared with a user associated with the stream page 600. In theillustrated example, the user includes “Rob McDavies” and the streampage 600 displays digital content that other users have shared with theuser and/or digital content that the user has shared with other users.

Among other features provided in the stream page 600, the stream pageincludes a content sharing interface 610. Although the content sharinginterface 610 is displayed on the stream page 600 in the illustratedexample, it is appreciated that the content sharing interface 610 can bedisplayed on particular web pages or all web pages of the socialnetworking service. In this manner, the content sharing interface 610can be available to the user on any web page and the user is notrequired to go to a particular web page to share digital content. Theuser can activate (e.g., click on) the content sharing interface 610 toshare digital content.

FIG. 6B depicts another screen-shot of the example stream page 600. Inthe illustrated example, the user has clicked on the content sharinginterface 610 and the content sharing interface 610 expands to includecontent input area 612, a distribution interface 614 and a share button616. The content input area 612, the distribution interface 614 and theshare button 616, and the functions thereof, correspond to the contentinput area 305, the distribution interface 340 and the share button 342of FIGS. 3A and 3B, as discussed in detail above.

In the illustrated example, an example identifier icon 620 and anexample identifier icon 622 are provided in the distribution interface614. As discussed above, the identifier icons 620, 622 are each providedas a visual representation of one or more users that digital content isto be shared with. In the example of FIG. 6B, a user has tentativelyindicated that digital content within the content input area 612 is tobe shared with members of a “friends” social circle and with members ofa “family” social circle. Until the post is committed the identifiericons 620, 622 provide a tentative distribution for the digital content.For example, the user can activate (e.g., click on) a delete control624, 626 of the respective identifier icons 620, 622 to remove theidentifier icons 620, 622 from the distribution interface 614.

In the example of FIG. 6B, a distribution for digital content providedin the content input area 612 can be defined by the social circlesand/or contacts identified in the distribution interface 614. In thedepicted example, a distribution is defined by a Friends social circle(graphically represented by the friends circle icon 620) and a Familysocial circle (graphically represented by the family circle icon 622).In this example, the distribution includes all of the contacts that aremembers of the Friends social circle and all of the contacts that aremembers of the Family social circle. The Friends social circle and theFamily social circle can each be considered sub-distributions thatdefine the overall distribution.

In some implementations, an email sharing control 630 can be provided.When activated (e.g., clicked on), the email sharing control 630provides the user with a way to control whether or not the content willbe shared with people who are not currently using the social networkingservice. For example, the email sharing control 682 can function as atoggle control that the user can click once to indicate that emailshould be used, and another click can indicate that email should not beused. An email count indicator 684 displays the number of people in thetentative distribution who would receive the shared content throughemail.

In some implementations, an auto-complete component providesauto-complete functionality that enables the user to type in part of thename of a social circle and/or individual contact to specify to whichsocial circles and/or individual contacts the post content is to bedistributed. In some implementations, the auto-complete functionalitycan be based on a contact ranking. For example, contacts and/or socialcircles can include an associated ranking score. Contacts having ahigher ranking score are ranked higher than contacts having a lowerranking score. In some examples, auto-complete functionality canidentify one or more contacts and/or one or more social circles based ontext input into a distribution interface of a content sharing interface,discussed in further detail below. The one or more contacts and/or oneor more social circles can be listed in rank order based on the rankingscores.

For example, the text input can include the letter “f” and theauto-complete functionality can identify the contacts “Farley” and“Frank” as contacts of the user, to which digital content can bedistributed. The contact “Farley” can have a ranking score that is lowerthan a ranking score of the contact “Frank.” The contacts can bedisplayed to the user for selection in rank order based on the rankingscore. Consequently, and continuing with the instant example, thecontact “Frank” can be listed higher on a list of contacts displayed tothe user than the contact “Farley.” In this manner, although the contact“Farley” could be listed first on an alphabetical basis, the contact“Frank” is instead listed first based on the ranking scores. As anotherexample, the text input can include the letter “f” and the auto-completefunctionality can identify the social circles “Family” and “Friends” associal circles defined by the user, to which digital content can bedistributed. The social circle “Family” can have a ranking score that islower than a ranking score of the social circle “Friends.” The socialcircles can be displayed to the user for selection in rank order basedon the ranking score. Consequently, and continuing with the instantexample, the social circle “Friends” can be listed higher on a list ofcontacts displayed to the user than the social circle “Family.” In thismanner, although the social circle “Family” could be listed first on analphabetical basis, the social circle “Friends” is instead listed firstbased on the ranking scores.

In some implementations, the ranking scores can be based on a popularityof contacts and/or social circles. For example, a contact that the useroften shares digital content with may have a ranking score that ishigher than a ranking score of a contact that the user rarely sharesdigital content with. Continuing with the example provided above, thecontact “Frank” may receive digital content from the user more oftenthan the contact “Farley.” As another example, a social circle that ismore often used to define distribution of digital content may have ahigher ranking score than a ranking score of a social circle that isless often used to define distribution of digital content. Continuingwith the example provided above, the social circle “Friends” may be usedmore often to define distribution of digital content by the user thanthe social circle “Family” (i.e., the user distributes content to theFriends social circle than the Family social circle).

In some implementations, the ranking scores can be based on a socialvicinity of the user to the respective contacts. For example, a rankingscore of a contact that is a direct contact of the user may be higherthan a ranking score of a contact that is an indirect contact of theuser. Continuing with the example provided above, the contact “Frank”can be a direct contact of the user (e.g., a friend) while the contact“Farley” is an indirect contact of the user (e.g., a friend of afriend).

In some implementations, the ranking scores can be based on a frequencyof interaction via emails between the user and each respective contact.For example, the user can directly email each contact using an emailservice and a ranking score can be generated for each contact based onthe email interaction. In some examples, the ranking score can bedetermined based on a number of emails sent from the user to aparticular contact. In some examples, the ranking score can bedetermined based on a number of emails sent from the user to aparticular contact over a particular time period. In this manner,frequency of email contact (i.e., number of emails per time period) isconsidered in the ranking score. In some examples, the ranking score canbe determined based on the number of emails sent from the user to theparticular contact and the number of emails sent from the particularcontact to the user. In some implementations, each ranking score can beprovided by an email service to the social networking service.

Continuing with the example provided above, the contact “Frank” can bein frequent email communication with the user, while the contact“Farley” is in less frequent email communication with the user. Aranking score corresponding to Frank and a ranking score correspondingto Farley can be provided to the underlying social networking servicefrom an email service. Accordingly, text input to a content sharinginterface can include the letter “f” and the auto-complete functionalitycan identify the contacts “Farley” and “Frank” as contacts of the user,to which digital content can be distributed. The contacts can bedisplayed to the user for selection in rank order based on the rankingscore. Consequently, and continuing with the instant example, thecontact “Frank” can be listed higher on a list of contacts displayed tothe user than the contact “Farley.”

In some examples, a character can be provided to the server as it isinput by the user and the server can process the character, and anypreviously provided characters, to provide output for presentation tothe user. For example, auto-complete functionality discussed herein caninclude character data being transmitted to the server as it is input bythe user to the content sharing interface. In response, the server cangenerate output including one or more contact names and/or socialcircles that correspond to the input character data for presentationback to the user in a list of contact names and/or social circles, fromwhich the user can select a particular contact and/or social circle.

As discussed above, a user can provide user input to a text region of acontent sharing interface. In some implementations, the user input caninclude one or more trigger characters, each trigger character extendingthe distribution (i.e., the resulting ACL) of the user-provided digitalcontent. For example, a trigger character can indicate that charactersimmediately following the trigger character define a contact, to whichthe digital content of the particular post should be distributed to. Insome implementations, this is in addition to contacts and/or socialcircles identified in an associated distribution interface. In someexamples, a trigger character can include the “@” character and/or the“+” character. The trigger character is immediately followed by acontact name. The trigger character and the contact name of a particularcontact indicate, within the text of the particular post, that the postis to be distributed to the particular contact in addition to any othercontacts and/or social circles that are input using an associateddistribution interface.

In one example, a user can input the text “@Frank” (or “+Frank”) in atext region (e.g., content input area 305 of the content sharinginterface 300) as part of a textual post. For example, as part of atextual post, the user can input the text “@Frank and I are headed toJoe's Tavern to watch the playoffs” within a text region of a contentsharing interface. The user can indicate that the textual post is to bedistributed to a social circle (e.g., a Friends social circle) using adistribution interface associated with the content sharing interface(e.g., the distribution interface 340 of the content sharing interface300). In response to the user sending the textual post for distributionusing the social networking service (e.g., by clicking on a postbutton), an ACL is generated for the textual post, as discussed herein,and includes contacts of the user that are members of the social circle,as well as the contact Frank (who may or may not be a member of thesocial circle). Accordingly, the presence of the text “@Frank” in thetext region results in distribution of the textual post to the contactFrank, even though the contact Frank might not be identified as part ofthe distribution defined using the distribution interface.

In some implementations, textual posts that include a trigger charactercan be distributed to contacts and can render with the trigger characterabsent. Continuing with the example above, the user can input the text“@Frank and I are headed to Joe's Tavern to watch the playoffs.” Uponsubmitting the textual post, the post is distributed to the contactFrank, as well as any contacts and/or social circles defined using thedistribution interface. When the contact Frank, and/or any othercontacts that the post is distributed to, the post can be displayed as“Frank and I are headed to Joe's Tavern to watch the playoffs” with the“@” trigger character absent.

In some implementations, the contact name following the triggercharacter can be converted to hypertext and can provide a link to thecontact's profile within the social networking service. Continuing withthe example above, the user can input the text “@Frank and I are headedto Joe's Tavern to watch the playoffs.” Upon submitting the textualpost, the post is distributed to the contact Frank, as well as anycontacts and/or social circles defined using the distribution interface.When the contact Frank, and/or any other contacts that the post isdistributed to, the post can be displayed as “Frank and I are headed toJoe's Tavern to watch the playoffs” with the “@” trigger characterabsent and the text “Frank” having a hyperlink associated therewith.Action on the hyperlink (e.g., clicking on) can induce Frank's profilewithin the social networking service to be displayed to the userperforming the action, subject to any privacy settings established byFrank.

In some implementations, text following a trigger character within atext region can be provided using auto-complete functionality discussedherein. Continuing with the example above, the user can initially type“@F” and, in response, a list of contact names can be presented to theuser to select from to complete the contact name input. As alsodiscussed herein, the contact names provided in the list of contactnames can be in ranked order based on respective ranking scores.

In some examples, a server can analyze the submitted text and recognizethe presence of a trigger character within the text. In response, theserver can analyze the text immediately following the trigger characterto identify a contact of the user that submitted the text and can addthe contact to the ACL for distribution of the post. In some examples, acharacter can be provided to the server as it is input by the user andthe server can process the character, and any previously providedcharacters, to provide output for presentation to the user. For example,auto-complete functionality discussed herein can include character databeing transmitted to the server as it is input by the user to thecontent sharing interface. In response, the server can generate outputincluding one or more contact names and/or social circles thatcorrespond to the input character data for presentation back to the userin a list of contact names and/or social circles, from which the usercan select a particular contact and/or social circle. In someimplementations, the presence of a trigger character within the textregion can trigger auto-complete functionality for selection of acontact name and/or social circle to immediately follow the triggercharacter.

FIG. 7 depicts a screenshot of an example web page 700 including examplecontent sharing interfaces. In the illustrated example, the web page 700is provided as a search results web page. The web page 700 includes acollection of search results 710-730. In some implementations, each ofthe search results 710-730 can be provided as a content item such as thecontent item 405 of FIGS. 4A-4D.

Share buttons 740, 750, 760 can be embedded in the search results page,and each share button 740, 750, 760 can associated with a respectivesearch result 710, 720, 730. In some implementations, HTML, JavaScriptand/or any appropriate programming code can be used to generate anddisplay the share buttons 740, 750, 760 within the search results page,and/or provide metadata that identifies the respective search result710, 720, 730 as being associated with the share button 740, 750, 760.As discussed in detail with reference to FIGS. 4A-5B, a user viewing thesearch results page can activate the share buttons 740, 750, 760 toshare a respective search result 710, 720, 730 as a content item. Forexample, the user can click on the share button 760 to open the displayregion 420, as described above with reference to FIG. 4C, and to adistribution for sharing the search result 730.

The example web page 700 further includes a so-called “sandbar” 780displayed along a top edge of the web page 700. In the illustratedexample, the sandbar 780 provides hypertext links to invoke otherfunctionality. Although hypertext links are provided in the instantexample, other types of links (e.g., icons, thumbnails) can also beprovided. A “share” link 782 is provided and can be activated (e.g.,clicked on) to invoke a content sharing interface. In someimplementations, the content sharing interface 420 of FIG. 4D can bedisplayed in response to activation of the share link 782. The contentsharing interface enables the user to share the entirety of the searchresults with other users as digital content. For example, a summary ofthe search results and/or a URL to the search results page(s) can beshared with users defined in the distribution. Although the sandbar 780is displayed in the example web page 700, the sandbar can be a featurethat is displayed on each of several web pages or all web pages viewedby the user.

FIG. 8 depicts a screenshot of an example map page 800 including anexample content sharing interface 805 and a displayed map space 810. Insome implementations, the content sharing interface 805 can be providedas a share button 410 and the map space can correspond to a content item405 of FIGS. 4A-4D, discussed in detail above. The map space 810 caninclude a portion of a map selected by a map server, and can bedisplayed by a user interface, such as a web browser or mappingapplication. In some implementations, the map space 810 can be definedby a display region 815 and a zoom level 820. The display region 815 caninclude a portion of the user's display that is allocated to present themap space 810. In other implementations, the map space 810 can befurther defined by a central point. The central point can be thelocation of interest (e.g., city center, destination, store location) orany other point within the map space 810 that serves as a referencepoint.

The display region 815 can vary according to a number of factors.Example factors include display device limitations, user preferences,and publisher preferences. In the example shown, the display region 815is defined by the size and resolution of the display device. Forexample, a desktop computer with a 21 inch display and 1280×768resolution can display more of a map than a web-enabled handheld devicehaving a 3 inch display and 240×240 resolution. Accordingly, the mapspace 810 that is selected for presentation to different user devicescan be different when the display region 815 and resolution of each userdevice is different.

Additionally, user preferences can affect the display region 815available to present map spaces. User devices can have user preferencesettings that define the display region 815 and resolution. For example,a user device displaying a web page on a 21 inch display device can havea limited display region 815, if the application window containing thedisplay region 815 is resized to occupy less than the entire display.Similarly, if the user device is displaying multiple windows within the21 inch display or otherwise is not maximizing the window displaying theweb page, the display region 815 may be limited. The user device canalso be configured by the user to operate at a lower resolution than themaximum available resolution, resulting in less information beingdisplayed.

Further, the display region 815 can vary according to publisherpreferences. For example, publishers may design web pages to incorporatemap spaces according to design specifications that enable a variety ofinformation to be displayed on a single page (e.g., content,advertisements, links). Accordingly, the portion of each web pageallocated for displaying the map space 810 may vary according to thedisplay region defined in the design specifications and allocated by thepublishers. For example, a publisher that publishes web pages dedicatedto displaying maps may allocate a large portion of the web page as thedisplay region 815, as shown in FIG. 8, while utilizing a small portionof the display for other information such as hyperlinks to other webpages. An example of a publisher that will allocate a large portion ofthe web page to displaying maps is a map service. In contrast, apublisher that publishes general content web pages my be more inclinedto allocate a much smaller portion of the web page as the display region815 since the map space 810 is only a portion of the information thatthe publisher is presenting.

The user can activate the share button 805 to share the particular mapshown within the display region 815. In some implementations, byclicking on the share button 805, the user can share a URL 825 thatlinks to the mapping service and provides instructions to display themap. In some implementations, however, the URL 825 may not accuratelyconvey the central point of the map space 810 that is currently shownwithin the display region 815 and/or at the selected zoom level 820. Forexample, the map that is displayed within the display region may be theresult of one or more pan and/or zoom operations invoked by the user.Therefore, in some implementations, activation of the share button 805can cause an identification of the map area 810 (e.g., the URL 825) aswell as metadata that describes the display region 815 and the zoomlevel 820 to be shared with other users as content. For example, aresulting post data set can include the URL and the metadata. When areceiving user, for example, clicks on the shared URL, the mappingservice can be called and the metadata can be provided to the mappingservice (e.g., through one or more application program interfaces(APIs)) to display the map to the receiving user exactly (e.g., with thesame pan and zoom operations) as the sharing user viewed the map, whenoriginally sharing the map.

In accordance with implementations of the present disclosure, aserver-side computing device (e.g., the server system 112 of FIG. 1) canbe used to serve one or more documents to one or more client-sidecomputing devices (e.g., client devices 102-110). In someimplementations, a document can include instructions that can beprocessed by a browser application executed on a client-side computingdevice to display a web page within a browser window. The instructionscan include instructions to display a content sharing interface withinthe web page and to receive user input through the content sharinginterface. In some implementations, the instructions can includeinstructions to associate digital content provided in the web page withthe content sharing interface.

In accordance with implementations of the present disclosure, aserver-side computing device (e.g., the server system 112 of FIG. 1) canbe used to serve instructions to one or more client-side computingdevices (e.g., client devices 102-110). In some implementations, theinstructions can be processed by a browser application executed on theclient-side computing device to display a content sharing interfacewithin one or more web pages displayed by the browser and to receiveuser input through the content sharing interface. In someimplementations, the instructions can include instructions to associatedigital content provided in each of the one or more web pages with thecontent sharing interface.

In accordance with implementations of the present disclosure, aclient-side computing device (e.g., e.g., client devices 102-110) canexecute a content-sharing application to display a content sharinginterface on a display of the client-side computing device. Thecontent-sharing application can include instructions to display acontent sharing interface within the display and to receive user inputthrough the content sharing interface. The content-sharing applicationcan correspond to a network of contacts associated with a user of theclient-side computing device. In some implementations, the network ofcontacts can include contacts through an email service and/or contactsthrough a social networking service. In some examples, thecontent-sharing application can provide a content sharing interface thatis displayed on a desktop screen of a client computing device.Consequently, a user of the client computing device can share digitalcontent with contacts directly from the desktop screen, withoutaccessing a social networking service website.

In some implementations, the content-sharing application can be providedas an add-on to other applications that can be executed using acomputing device. In some examples, a productivity application (e.g., aword processing application, a spreadsheet application, a presentationapplication, an email application) can be executed to provide agraphical user interface (GUI) through which a user can perform tasks(e.g., create and/or edit a document, a spreadsheet, a presentation,and/or an email). The content-sharing application can be executed toprovide a content sharing interface within the GUI of the productivityapplication. In this manner, a user can share digital content withcontacts while working in the productivity application, without havingto switch applications and/or accessing a social networking servicewebsite. It is appreciated that productivity applications are providedfor purposes of example, and that the content-sharing application can beprovided as an add-on to any other appropriate type of application(e.g., entertainment, gaming).

FIG. 9 is a flowchart illustrating an example process 900 for sharingcontent. The example process 900 can be implemented using one or moreprogram applications executed on one or more computing devices. In someimplementations, one or more server systems (e.g., the server system 112of FIG. 1) and one or more client computing devices (e.g., clientdevices 102-110 of FIG. 1) can perform operations of the example process900.

A document is served (i.e., transmitted) to a client computing device(902). For example, the server system 112 serves the document to theclient computing device 108. The document contains instructions for abrowser application to perform client-side operations. For example, theclient computing device 108 can execute a browser application thatprocesses the instructions.

Digital content is displayed (904). For example, digital content can bedisplayed in a window of the browser application. A graphicalrepresentation of a content sharing interface is displayed (906). Forexample, the digital content can be displayed in a window of the browserapplication. User input is received to the content sharing interface(908). For example, the user 120 d can provide input to the contentsharing interface using the computing device 108. The user inputindicates one or more contacts to which the digital content is to bedistributed. One or more icons are displayed within the content sharinginterface in response to receiving the user input (910). For example,the user input can be processed to identify the one or more contacts ofthe user. The one or more contacts can be contacts of the user within anemail service and/or contacts within a social networking service. Eachicon of the one or more icons being a graphical representation of theone or more contacts.

User input to the content sharing interface is received (912). The userinput includes a user instruction to distribute the digital content. Forexample, the user input can be generated in response to the userclicking on a share button of the content sharing interface. Post datais transmitted to the server computing system in response to the userinput (914). The post data set includes digital content data anddistribution data. The post data set is received (916). For example, theserver system receives the post data set. An access control list (ACL)is generated based on the distribution data (918). The distribution datacorresponds to the one or more contacts. For example, the server systemgenerates the ACL based on the distribution data. The digital content isdistributed based on the ACL (920). For example, the server system canprovide a distribution hub that determines end points, to which thedigital content is to be distributed.

In some implementations, the example process 900 can include additionalactions. In some examples, upon receiving user input that indicates oneor more contacts to which the digital content is to be distributed, anACL service can check the one or more contacts, groups of contactsand/or domains to which the digital content is to be distributed againstone or more policies, as discussed below with respect to FIGS. 10A-12.

In some implementations, the ACL service, discussed above, can enforceone or more digital content distribution policies. Example distributionpolicies can include age policies and/or domain policies. For purposesof illustration, example domain policies will be discussed herein. Insome examples, domain policies can include enabling users to distributedigital content to contacts that are not contacts within a particulardomain or prohibiting users to distribute digital content to contactsthat are not contacts within a particular domain. An example domain caninclude a domain of a provider of the computer-implemented socialnetworking service. In some examples, an age policy can includeprohibiting distribution of digital content to one or more contacts thatare determined to be minors.

FIGS. 10A-11 depict example output of an access control list (ACL)service in enforcing domain policies. FIGS. 10A and 10B correspond to adomain policy that enables users to distribute digital content tocontacts that are not contacts within a particular domain. However, andin accordance with the policy, users are warned that the digital contentwill be distributed to contacts outside of the particular domain. Insome examples, and for purposes of illustration, a first domain caninclude a social networking service domain established by a provider ofthe social networking service, and a second domain can include an emailservice domain established by a provider of an email service.

With particular reference to FIGS. 10A and 10B, a user of the socialnetworking service can provide input to a distribution interface 1000 todefine distribution of digital content, as discussed in detail herein.One or more contacts and/or one or more social circles can be determinedbased on the user input. The determined contacts and/or social circlescan be graphically represented within the distribution interface 1000,as discussed in detail herein. In the example of FIG. 10A, an “Anyone”icon 1002 graphically represents a first distribution, a “Soccer Club”icon 1004 graphically represents a second distribution and a “Friends”icon 1006 represents a third distribution. In the depicted example, thefirst distribution includes any user that accesses the Internet,indicating that the associated digital content will be visible to anyonevia the Internet. The second distribution corresponds to a Soccer Clubsocial circle established by the user within the social networkingservice and can include one or more contacts that are contacts withinthe social networking service (i.e., the first domain) and one or morecontacts that are non-social networking service contacts. In someexamples, the non-social networking contacts can be contacts within anemail service (i.e., the second domain). The third distributioncorresponds to a Friends social circle established by the user withinthe social networking service and can include one or more contacts thatare contacts within the social networking service (i.e., the firstdomain).

In some implementations, the ACL service can receive data indicating thefirst distribution defined in the distribution interface 1000. The ACLservice can process the first distribution to determine whether thedigital content would be visible outside of the first domain. Continuingwith the example above, the first distribution includes any user thataccesses the Internet. Consequently, the ACL service determines that thedigital content would be visible outside of the first domain, ifdistributed based on the first distribution. In response, the ACLservice provides notification data that can be processed to generate anotification to the user that the digital content would be visibleoutside of the first domain. In some examples, an initial notificationcan be provided based on an appearance of the corresponding icon 1002.In the example of FIG. 10A, the color of the icon 1002 can be providedas red, for example, visually indicating that the digital content wouldbe visible outside of the first domain. In some examples, a dialoguebubble 1008 can be displayed to textually indicate that the digitalcontent would be visible outside of the first domain. For example, auser can manipulate a cursor to hover-over the icon 1002 within adisplay. In response to the hover-over action, the dialogue bubble 1008can be displayed.

In some implementations, the ACL service can receive data indicating thesecond distribution defined in the distribution interface 1000. The ACLservice can process the second distribution to determine whether thedigital content would be visible outside of the first domain. Continuingwith the example above, the second distribution includes contacts withinthe social networking service (i.e., the first domain) and non-socialnetworking service contacts. Consequently, the ACL service determinesthat the digital content would be visible outside of the first domain,if distributed based on the second distribution. In response, the ACLservice provides notification data that can be processed to generate anotification to the user that the digital content would be visibleoutside of the first domain. In the example of FIG. 10A, the color ofthe icon 1004 can be provided as red, for example, visually indicatingthat the digital content would be visible outside of the first domain.

In some implementations, the ACL service can receive data indicating thethird distribution defined in the distribution interface 1000. The ACLservice can process the third distribution to determine whether thedigital content would be visible outside of the first domain. Continuingwith the example above, the third distribution includes contacts withinthe social networking service (i.e., the first domain). Consequently,the ACL service determines that the digital content would not be visibleoutside of the first domain, if distributed based on the thirddistribution. In response, the ACL service provides notification datathat can be processed to generate a notification to the user that thedigital content would not be visible outside of the first domain as aconsequence of the third distribution. In the example of FIG. 10 A, thecolor of the icon 1006 can be provided as green, for example, visuallyindicating that the digital content would only be visible within thefirst domain as a consequence of the third distribution.

In some implementations, a post button 1010 can be provided. The usercan activate (e.g., click on) the post button 1010 to submit the digitalcontent for distribution. In response to the user activation of the postbutton 1010, and a distribution indicating that the digital contentwould be distributed outside of the first domain, a confirmationdialogue can be displayed to the user.

With particular reference to FIG. 10B, an example confirmation dialogue1020 is provided. The example confirmation dialogue 1020 notifies theuser that the digital content will be distributed outside of the firstdomain and displays the icons 1002, 1004, which would result in thedistribution of the digital content outside of the first domain. Theconfirmation dialogue 1020 can include a checkbox 1022, a post button1024 and a cancel button 1026. The checkbox 1022 can be activated by theuser to indicate that, despite the notification that the digital contentwill be distributed outside of the first domain, the user intends toproceed with distribution of the digital content. In the depictedexample, the checkbox 1022 is not activated. Consequently, the postbutton 1024 is non-actionable (e.g., greyed out). If the user activatesthe checkbox 1022, the post button 1024 becomes actionable and the usercan activate (e.g., click on) the post button to have the digitalcontent distributed.

FIG. 11 corresponds to a domain policy that prohibits users todistribute digital content to contacts that are not contacts within aparticular domain. a user of the social networking service can provideinput to a distribution interface 1100 to define distribution of digitalcontent, as discussed in detail herein. One or more contacts and/or oneor more social circles can be determined based on the user input. Thedetermined contacts and/or social circles can be graphically representedwithin the distribution interface 1100, as discussed in detail herein.In the example of FIG. 11, a “Friends” icon 1102 represents adistribution. In the depicted example, the distribution corresponds to aFriends social circle established by the user within the socialnetworking service and can include one or more contacts that arecontacts within the social networking service (i.e., the first domain).

User input to the distribution interface 1100 can correspond to adistribution that includes one or more contacts external to the firstdomain. For example, the user can input an email address correspondingto a second domain. In the depicted example, an example email addresscan be provided as “johndoe@notdomain.com,” which can be provided by anemail service in the second domain. The ACL service can receive the userinput and can process the user input to determine that the email addressdoes not correspond to the first domain. Consequently, an iconcorresponding to the email address is not displayed in the distributioninterface 1100. Instead, the ACL service can provide notification datato display a notification to the user that the distribution is externalto the first domain. In the depicted example, the notification includesa dialogue bubble 1104 indicating that distribution to the email addressjohndoe@notdomain.com is prohibited.

In some implementations, a domain policy can include a hybrid domainpolicy that enables users to distribute digital content to one or moredomains that are external to the domain of the social networkingservice, while also prohibiting distribution of digital content to oneor more other domains that are also external to the domain of the socialnetworking service.

It is appreciated that the domain policies discussed herein are exampledomain policies. Accordingly, the ACL service can enforce anyappropriate domain policy that can be established by a domainadministrator.

FIG. 12 is a flowchart illustrating an example process 1200 forenforcing one or more policies. The example process 1200 can beimplemented using one or more program applications executed on one ormore computing devices. In some implementations, one or more serversystems (e.g., the server system 112 of FIG. 1) and/or one or moreclient computing devices (e.g., client devices 102-110 of FIG. 1) canperform operations of the example process 1200.

User input is provided (1202). For example, the user input can beprovided to a graphical user interface (e.g., a distribution interface)provided on a client-side computing device. The user input is received(1204). For example, the user input can be received by one or moreserver-side computing devices. The user input can define a distributionindicating one or more contacts to which digital content is to bedistributed. The distribution is processed based on one or more policies(1206), each of the one or more policies providing a limitation ondistribution of digital content.

It is determined whether the distribution violates at least one policyof the one or more policies (1208) based on the processing. If it isdetermined that the distribution does not violate at least one policy ofthe one or more policies, the example process 1200 ends. If it isdetermined that the distribution violates at least one policy of the oneor more policies, notification data is transmitted (1210). Anotification is displayed (1212). For example, a client-side computingdevice can receive the notification data and can display thenotification based thereon. The example process 1200 ends.

A number of implementations have been described. Nevertheless, it willbe understood that various modifications may be made without departingfrom the spirit and scope of the disclosure. For example, various formsof the flows shown above may be used, with steps re-ordered, added, orremoved. Accordingly, other implementations are within the scope of thefollowing claims.

Implementations of the present disclosure and all of the functionaloperations provided herein can be realized in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Implementationsof the invention can be realized as one or more computer programproducts, i.e., one or more modules of computer program instructionsencoded on a computer readable medium for execution by, or to controlthe operation of, data processing apparatus. The computer readablemedium can be a machine-readable storage device, a machine-readablestorage substrate, a memory device, a composition of matter effecting amachine-readable propagated signal, or a combination of one or more ofthem. The term “data processing apparatus” encompasses all apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include, in addition to hardware, code that creates anexecution environment for the computer program in question, e.g., codethat constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, and it can bedeployed in any form, including as a stand alone program or as a module,component, subroutine, or other unit suitable for use in a computingenvironment. A computer program does not necessarily correspond to afile in a file system. A program can be stored in a portion of a filethat holds other programs or data (e.g., one or more scripts stored in amarkup language document), in a single file dedicated to the program inquestion, or in multiple coordinated files (e.g., files that store oneor more modules, sub programs, or portions of code). A computer programcan be deployed to be executed on one computer or on multiple computersthat are located at one site or distributed across multiple sites andinterconnected by a communication network.

The processes and logic flows described in this disclose can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device, e.g., a mobile telephone, a personal digital assistant(PDA), a mobile audio player, a Global Positioning System (GPS)receiver, to name just a few. Computer readable media suitable forstoring computer program instructions and data include all forms of nonvolatile memory, media and memory devices, including by way of examplesemiconductor memory devices, e.g., EPROM, EEPROM, and flash memorydevices; magnetic disks, e.g., internal hard disks or removable disks;magneto optical disks; and CD ROM and DVD-ROM disks. The processor andthe memory can be supplemented by, or incorporated in, special purposelogic circuitry.

To provide for interaction with a user, implementations of the inventioncan be implemented on a computer having a display device, e.g., a CRT(cathode ray tube) or LCD (liquid crystal display) monitor, fordisplaying information to the user and a keyboard and a pointing device,e.g., a mouse or a trackball, by which the user can provide input to thecomputer. Other kinds of devices can be used to provide for interactionwith a user as well; for example, feedback provided to the user can beany form of sensory feedback, e.g., visual feedback, auditory feedback,or tactile feedback; and input from the user can be received in anyform, including acoustic, speech, or tactile input.

Implementations of the present disclosure can be realized in a computingsystem that includes a back end component, e.g., as a data server, orthat includes a middleware component, e.g., an application server, orthat includes a front end component, e.g., a client computer having agraphical user interface or a Web browser through which a user caninteract with an implementation of the present disclosure, or anycombination of one or more such back end, middleware, or front endcomponents. The components of the system can be interconnected by anyform or medium of digital data communication, e.g., a communicationnetwork. Examples of communication networks include a local area network(“LAN”) and a wide area network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this disclosure contains many specifics, these should not beconstrued as limitations on the scope of the disclosure or of what maybe claimed, but rather as descriptions of features specific toparticular implementations of the disclosure. Certain features that aredescribed in this disclosure in the context of separate implementationscan also be provided in combination in a single implementation.Conversely, various features that are described in the context of asingle implementation can also be provided in multiple implementationsseparately or in any suitable subcombination. Moreover, althoughfeatures may be described above as acting in certain combinations andeven initially claimed as such, one or more features from a claimedcombination can in some cases be excised from the combination, and theclaimed combination may be directed to a subcombination or variation ofa subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the implementations described above should not beunderstood as requiring such separation in all implementations, and itshould be understood that the described program components and systemscan generally be integrated together in a single software product orpackaged into multiple software products.

In each instance where an HTML file is mentioned, other file types orformats may be substituted. For instance, an HTML file may be replacedby an XML, JSON, plain text, or other types of files. Moreover, where atable or hash table is mentioned, other data structures (such asspreadsheets, relational databases, or structured files) may be used.

Thus, particular implementations of the present disclosure have beendescribed. Other implementations are within the scope of the followingclaims. For example, the actions recited in the claims can be performedin a different order and still achieve desirable results.

1. A system comprising: a server computing device that is operable toserve a computer program to one or more client computing devices over anetwork, the computer program comprising instructions stored thereonwhich, when executed by the client computing device, cause the clientcomputing device to perform operations for distributing digital contentfor display across a network, the operations comprising: presenting agraphical representation of a content sharing interface of a socialnetworking service on a display; receiving first user input to thecontent sharing interface; in response to the first user input,expanding the content sharing interface to include an expanded contentinput area and a distribution interface, the expanded content input areadisplaying a graphical representation of digital content that is to bedistributed; receiving second user input to the distribution interface,the second user input indicating one or more contacts to which thedigital content is to be distributed; in response to receiving thesecond user input, displaying one or more icons within the distributioninterface, each icon of the one or more icons being a graphicalrepresentation of the one or more contacts; receiving third user inputto the content sharing interface, the third user input comprising a userinstruction to distribute the digital content; and in response to thethird user input, transmitting a post data set to the server computingsystem, the post data set comprising digital content data anddistribution data.
 2. The system of claim 1, wherein an icon of the oneor more icons corresponds to a social circle of the user within thesocial networking service, the social circle defining a subset of theone or more contacts.
 3. The system of claim 1, wherein an icon of theone or more icons corresponds to a second social networking service thatthe user participates in.
 4. The system of claim 3, wherein the secondsocial networking service comprises a micro-blogging social networkingservice.
 5. The system of claim 3, wherein the second social networkingservice comprises a blogging service.
 6. The system of claim 1, whereinan icon of the one or more icons corresponds to at least one contactthat is to receive the digital content via email.
 7. The system of claim1, wherein the operations further comprise displaying web page digitalcontent within the web page, wherein the content sharing interfacedisplays a summary of the web page digital content within the expandedcontent input area.
 8. The system of claim 1, wherein the operationsfurther comprise displaying one or more digital content selection iconswithin the expanded content selection area.
 9. The system of claim 8,wherein the operations further comprise: receiving fourth user input,the fourth user input indicating a selection of an icon of the one ormore digital content selection icons; and in response to receiving thefourth user input, displaying a digital content selection interfacethrough which a user can select additional digital content fordistribution.
 10. The system of claim 8, wherein the one or more digitalcontent selection icons comprise a digital image selection icon, adigital video selection icon, a link selection icon and a map selectionicon.
 11. The system of claim 8, wherein the one or more digital contentselection icons are displayed in the content sharing interface prior toreceiving the first user input.
 12. The system of claim 1, wherein thegraphical representation of the content sharing interface is displayedon a desktop display of the client computing device.
 13. The system ofclaim 1, wherein the graphical representation of the content sharinginterface is displayed as a toolbar within a web browser applicationexecuted on the client computing device.
 14. A computer storage mediumencoded with a computer program, the program comprising instructionsthat when executed by one or more computers cause the one or morecomputers to perform operations comprising: presenting a graphicalrepresentation of a content sharing interface of a social networkingservice on a display; receiving first user input to the content sharinginterface; in response to the first user input, expanding the contentsharing interface to include an expanded content input area and adistribution interface, the expanded content input area displaying agraphical representation of digital content that is to be distributed;receiving second user input to the distribution interface, the seconduser input indicating one or more contacts to which the digital contentis to be distributed; in response to receiving the second user input,displaying one or more icons within the distribution interface, eachicon of the one or more icons being a graphical representation of theone or more contacts; receiving third user input to the content sharinginterface, the third user input comprising a user instruction todistribute the digital content; and in response to the third user input,transmitting a post data set to the server computing system, the postdata set comprising digital content data and distribution data.
 15. Acomputer-implemented method comprising: presenting a graphicalrepresentation of a content sharing interface of a social networkingservice on a display; receiving first user input to the content sharinginterface; in response to the first user input, expanding the contentsharing interface to include an expanded content input area and adistribution interface, the expanded content input area displaying agraphical representation of digital content that is to be distributed;receiving second user input to the distribution interface, the seconduser input indicating one or more contacts to which the digital contentis to be distributed; in response to receiving the second user input,displaying one or more icons within the distribution interface, eachicon of the one or more icons being a graphical representation of theone or more contacts; receiving third user input to the content sharinginterface, the third user input comprising a user instruction todistribute the digital content; and in response to the third user input,transmitting a post data set to the server computing system, the postdata set comprising digital content data and distribution data.